#ifndef USARTTOOLWIDGET_H
#define USARTTOOLWIDGET_H

#include <QWidget>
#include <QGroupBox>
#include <QVBoxLayout>
#include <QRadioButton>
#include <QCheckBox>
#include <QMenu>
#include <QAction>
#include <QPushButton>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLineEdit>
#include <QTextEdit>

QT_BEGIN_NAMESPACE
namespace Ui {
class UsartToolWidget;
}
QT_END_NAMESPACE

class UsartToolWidget : public QWidget
{
    Q_OBJECT

public:
    UsartToolWidget(QWidget *parent = nullptr);
    ~UsartToolWidget();

private:
    Ui::UsartToolWidget *ui;

    //容器
    QGroupBox *main;    //主容器   用于规范各个容器位置
    QGroupBox *usartBox;//串口设置     容器
    QGroupBox *recvBox; //接受区设置   容器
    QGroupBox *sendBox; //发送区设置   容器
    QGroupBox *msgBox;  //串口数据接收 容器

    //优化盛满布局
    QVBoxLayout *main_layout;

    //全局容器布局
    QHBoxLayout *qh_box;//容器水平布局
    QVBoxLayout *qv_box;//容器垂直布局

    //串口设置布局
    QHBoxLayout *qh_port; //串口号 水平布局
    QHBoxLayout *qh_bt;   //波特率 水平布局
    QHBoxLayout *qh_jy;   //校验位 水平布局
    QHBoxLayout *qh_data; //数据位 水平布局
    QHBoxLayout *qh_stop; //停止位 水平布局
    QVBoxLayout *usart;   //整体垂直布局

    //接受区布局
    QHBoxLayout *qh_but; //按钮水平布局
    QVBoxLayout *qv_re; //复选框垂直布局

    //发送区布局
    QHBoxLayout *qh_sendBut; //按钮水平布局
    QHBoxLayout *qh_lab;     //发送间隔水平布局
    QVBoxLayout *qv_send;    //复选框垂直布局

    //串口数据接收布局
    QHBoxLayout *qh_text;   //多行输入和按钮 水平布局
    QVBoxLayout *qv_text;   //多行输入 垂直布局

    //按钮设置
    QPushButton *open;        //串口设置     打开按钮
    QPushButton *saveData;    //接受区设置   保存数据按钮
    QPushButton *clearShow;   //接受区设置   清除显示按钮
    QPushButton *file_in;     //发送区设置   文件载入按钮
    QPushButton *file_clear;  //发送区设置   清楚输入按钮
    QPushButton *cmd_send;    //串口数据接收 发送按钮


    //单行输入
    QLineEdit *send_line;

    //多行输入
    QTextEdit *text_show; //串口数据接收  对话显示文本框
    QTextEdit *text_send; //串口数据接收  命令发送文本框

    //文本
    QLabel *send_lab1; //发送区设置 "发送间隔"
    QLabel *send_lab2; //发送区设置 "毫秒"


    //串口设置 下拉菜单
    QMenu *menu1;
    QMenu *menu2;
    QMenu *menu3;
    QMenu *menu4;
    QMenu *menu5;


    //复选框
    QCheckBox *cb1;
    QCheckBox *cb2;
    QCheckBox *cb3;
    QCheckBox *cb4;
    QCheckBox *cb5;
    QCheckBox *cb6;
    QCheckBox *cb7;
    QCheckBox *cb8;
    QCheckBox *cb9;
};
#endif // USARTTOOLWIDGET_H
